package com.im.common.toolkit;

import org.springframework.cglib.beans.BeanCopier;

import java.util.HashMap;
import java.util.Map;

/** @author gongym */
public class BeanUtils {
  /**
   * @description: 创建过的BeanCopier实例放到缓存中，下次可以直接获取，提升性能
   * @date 2019/2/19 13:36
   */
  private static final Map<String, BeanCopier> BEAN_COPIERS = new HashMap<>();

  public static void copy(Object srcObj, Object destObj) {
    String key = genKey(srcObj.getClass(), destObj.getClass());
    BeanCopier copier;
    if (!BEAN_COPIERS.containsKey(key)) {
      copier = BeanCopier.create(srcObj.getClass(), destObj.getClass(), false);
      BEAN_COPIERS.put(key, copier);
    } else {
      copier = BEAN_COPIERS.get(key);
    }
    copier.copy(srcObj, destObj, null);
  }

  private static String genKey(Class<?> srcClazz, Class<?> destClazz) {
    return srcClazz.getName() + destClazz.getName();
  }
}
